#include<stdlib.h>
int** create_array(int n,int m)                 //动态分配二维数组
{
    int** p;
    p=(int**)malloc(n*sizeof(int*));
    for(int i=0;i<n;i++)
    {
        p[i]=(int*)malloc(m*sizeof(int));
    }
    return p;
}
void delete_array(int n,int m,int**p_array)                             //清理分配的空间
{
    for(int i=0;i<n;i++)
        free(p_array[i]);
    free(p_array);
}

#include<iostream>
using namespace std;
void read_array(int n,int m,int** p_array)
{
    int times=n*m;
    int p;
    for(int i=0;i<n;i++)
    {
        for(int j=0;j<m;j++)
        {
            cin>>p;
            p_array[i][j]=p;
        }
    }
}
void x_exchange(int x,int y,int m,int** p_array)
{
    int*p;
    p=(int*)malloc(m*sizeof(int));
    for(int i=0;i<m;i++)
    {
        p[i]=p_array[x-1][i];
    }
    for(int i=0;i<m;i++)
    {
        p_array[x-1][i]=p_array[y-1][i];
        p_array[y-1][i]=p[i];
    }
    free(p);
}
void y_exchange(int x,int y,int n,int** p_array)
{
    int*p;
    p=(int*)malloc(n*sizeof(int));
    for(int i=0;i<n;i++)
        p[i]=p_array[i][x-1];
    for(int i=0;i<n;i++)
    {
        p_array[i][x-1]=p_array[i][y-1];
        p_array[i][y-1]=p[i];
    }
    free(p);
}
void print_array(int n,int m,int**p_array)
{
    for(int i=0;i<n;i++)
    {
        for(int j=0;j<m;j++)
        {
            cout<<p_array[i][j];
            if(j!=m-1)
                cout<<' ';
        }
        if(i!=n-1)
            cout<<endl;
    }
}
int main()
{
    int n,m,enter;
    cin>>n>>m;
    enter=getchar();                //吸收回车，不让程序以回车结束运行
    int**p_array;
    p_array=create_array(n,m);
    for(int i=0;i<n;i++)
    {
        for(int j=0;j<m;j++)
        {
            cin>>p_array[i][j];
        }
        enter=getchar();
    }
    int op_time;
    cin>>op_time;
    enter=getchar();
    int y_tag;
    int x,y;
    for(int i=0;i<op_time;i++)
    {
        cin>>y_tag>>x>>y;
        enter=getchar();
        if(y_tag)
            y_exchange(x,y,n,p_array);
        else
            x_exchange(x,y,m,p_array);
    }
    print_array(n,m,p_array);
    delete_array(n,m,p_array);
}